/* 用孩子兄弟表示法求树所有叶子结点个数 */
#include <iostream>
#include "BiTreefun.h"
using namespace std;

// 求叶子结点的个数
int fun(BTNode *p)
{
  // 如果二叉树为空
  if (p == NULL)
    return 0; // 叶子结点个数为0
  
  // 没有孩子结点
  if (p->lchild == NULL)
    return fun(p->rchild) + 1; // 求兄弟子树的叶子结点个数
  
  // 孩子子树的叶子结点 和 兄弟子树的叶子结点 个数之和
  return fun(p->lchild) + fun(p->rchild);
}
int main()
{
  // 创建二叉树
  BTNode *T = create_bitree();
  cout << "叶子节点个数为:" << fun(T);
  return 0;
}
